草庐IT

c++ - DLL的开销

全部标签

c - 为什么当我不使用 getch() 时输出只是闪烁?

当我在DevC++中编译并运行以下代码时,#includemain(){printf("Helloworld!");}输出只是闪烁。当我添加getch时,它会保留。#includemain(){printf("Helloworld!");getch();}为什么会这样? 最佳答案 getch()使您的程序在终止之前等待用户输入。Win32控制台应用程序的一个恼人之处是控制台会在程序终止后立即关闭(因此它只是闪烁)。Win9x下的旧DOS程序不是这种情况(控制台默认保持打开状态,除非在DOS快捷方式属性中选中复选框)。如果您在命令提示

c++ - 通过 FS 寄存器访问衍生进程的 TIB?

我想访问衍生进程的TIB(我使用CreateProcessW成功创建了进程)。我通过以下方式获得了指向生成进程的TIB的指针:GetThreadContext(当然有权限设置)访问pContext.SegFs像这样格式化这个值:(ldtSel.HighWord.Bits.BaseHi(我不认为这是必要的)。格式后我剩下的值是一个10位指针。我如何使用这个变量代替fs寄存器来访问线程信息block?我访问它的常规方式通常是这样的:__asm{moveax,fs:[0x30]//PEBmovdwPebBase,eax}不过,用指针变量替换“fs”当然不行,去掉分号还有意想不到的效果。那么我

c - 阻止文件创建

我必须编写一个功能来防止用户在WindowsXP的桌面上创建文件(快捷方式文件(*.lnk)和目录除外)。经过一些研究,我得出结论,这可以使用文件系统过滤器驱动程序或微型驱动程序来完成。更改NTFS权限不起作用,因为无法加载/保存漫游配置文件。我查看了DDK示例。例如取消安全。他们正在取消I/O,但这不是我想要的。我见过防病毒程序阻止对受感染文件的访问,并且操作系统返回错误代码5:访问被拒绝。我想要完全相同的行为。那么我怎样才能在过滤器驱动程序中实现这一点呢? 最佳答案 你需要写minifilterdriver并附加到桌面文件夹所在

windows - 从 32 位 C dll 创建 64 位 dll

我有一个从第三方获得的32位dll。他们没有64位版本。我希望将这个dll加载到64位python中。为此,我需要一个64位dll。是否有将32位dll转换为64位dll的工具,或者这是不可能的?如果不可能,我想我必须使用32位python。 最佳答案 只有供应商可以执行此操作,除非您可以访问DLL的源代码。必须针对64位重新编译它。我猜你必须使用32位python... 关于windows-从32位Cdll创建64位dll,我们在StackOverflow上找到一个类似的问题:

c - 赋值从整数生成指针而不进行强制转换

当我尝试编译以下代码时:#defineBUFSIZEMAX_PATH//....TCHARsz_VolumeName[BUFSIZE];//11HANDLEhSearch;//12hSearch=FindFirstVolume(sz_VolumeName,BUFSIZE);//13它给了我错误:[Warning]assignmentmakespointerfromintegerwithoutacast-第13行的问题这里出了什么问题?编辑:例如:#include#include#include#include#defineBUFSIZEMAX_PATHintmain(intargc,c

c - 为什么 NdisFRegisterFilterDriver 在 Windows 8 下失败并显示 NDIS_STATUS_FAILURE?

大家。我正在开发NDIS6过滤器驱动程序(LWF)。DriverEntry例程中的NdisFRegisterFilterDriver调用因NDIS_STATUS_FAILURE失败。只出现在Win8x86上,驱动在Win7x86下可以正常运行。太奇怪了。我看过这个线程但没有用:WhydoesNdisFRegisterFilterDriverreturnNDIS_STATUS_FAILURE?这是我的DriverEntry例程和inf文件。_Use_decl_annotations_NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject,INPU

c++ - Sublime Text 启动单独的命令窗口(C/C++)

我正在尝试执行ProgramminginCbyStephenG.Kochan中的所有程序作为练习,让自己熟悉C(在Windows8机器上)的一些更精细的细节(我没有去学校学习计算机科学)。很多书都是简单的程序,我想输入程序SublimeText(与我一直在使用openFrameworks的Code::Blocks相对)。有没有一种简单的方法可以在编译后为程序启动单独的命令窗口。这有点hacky,但我更改了构建的“运行”版本以启动已编译的程序"cmd":["${file_base_name}.exe"]但显然,SublimeText文档说GUI'saresuppressed.我想做的是启

windows - 错误 0xc000007b 尝试绕行注入(inject) DLL 时

我正在尝试使用最新的32位Detours库将DLL注入(inject)新进程。http://research.microsoft.com/en-us/projects/detours/它过去对我有用,但在更改DLL后,它不再对所有进程起作用。当我恢复该过程时,我收到一个消息框,上面写着Theapplicationwasunabletostartcorrectly(0xc000007b).ClickOKtoclosetheapplication.我用注入(inject)的纯空DLL重新创建了它,除了kernel32.dll之外没有任何依赖项。对于其他可执行文件,它可以完美地工作。知道为什

C 试图在 header 中查找\r\n\r\n

我试图找到最后一次出现的\r\n\r\n并删除它之前的所有内容(包括它)。我正在创建一个套接字并下载一个文件,然后该文件将被保存。HTTPheader保存在文件中(并且根据十六进制编辑器\r\n\r\n确实存在)。但我似乎无法使用strstr找到它,根据MSDNrecv返回char所以它应该能够找到它?while((tmpres=recv(sock,buf,BUFSIZ,0))>0){char*p=strstr(buf,"\r\n\r\n");printf("%s",p);exit(1);if(fwrite(buf,1,tmpres,fp)!=tmpres){printf("Error

创建 16 位应用程序?

我想创建一个16位Dos应用程序并希望它在我的32位Windows7机器上使用NTVDM.exe运行。我该怎么做?我基本上希望我的应用程序通过NTVDM执行文件操作,为此我认为我首先需要一个16位应用程序,还有其他方法吗?我不需要模拟器,我需要创建一个16位应用 最佳答案 声称支持16位(MS-DOS和Win16)的几个免费C/C++编译器是DigitalMarscompiler和OpenWatcomCompiler.OpenWatcom网页目前没有响应...有一个SourceForgedownload页面。